<?php

/**
 * 队列锁
 *
 * @author libaoling
 * @time 2014-8-27
 */
class QueueApp extends ECBaseApp
{
    protected $lockFile;
    protected $LockTime = 60;
    protected $limit = 20;
    
    public function __construct()
    {
        parent::__construct();
        if(empty($this->lockFile)){
            echo "没有设置锁定文件 \n";
            exit;
        }
         
    }

    /*
     * 文件上锁，锁文件主要也就是时间锁的问题。这里一分钟60s 
     * 只要时间不超过60s，文件就处于锁定状态 
     * 超过60s，重新写锁文件的内容 
     * 也就是说60s，运行时间，或者解锁。 
     */
    protected function lockUp()
    {
        if (file_exists($this->lockFile)) {
            $content = file_get_contents($this->lockFile);
            if ((intval(time()) - strtotime($content)) > $this->LockTime) {
                file_put_contents($this->lockFile, date('Y-m-d H:i:s'));
            } else {
                die('file is locked!');
            }
        } else {
            file_put_contents($this->lockFile, date('Y-m-d H:i:s'));
        }
    }

    /**
     * 文件解锁，删除目录 
     * unlink(); 
     */
    protected function unLock()
    {
        @unlink($this->lockFile);
    }

    /*
     * 临时目录，存放脚本锁文件位置 
     * strncmp()比较两个字符串 WIN下就存放在  C:\WINDOWS\TEMP 
     * getenv()系统的环境变量 
     */

    protected function getTempDir()
    {
        if (strncmp(PHP_OS, 'WIN', 3) === 0) {
            return getenv('TEMP');
        } else {
            return '/tmp';
        }
    }
}
